package com.ltkj.order.service;

import com.ltkj.common.core.domain.R;
import com.ltkj.common.core.web.domain.AjaxResult;
import com.ltkj.order.domain.TicOrder;
import com.ltkj.order.domain.dto.*;
import com.ltkj.order.domain.vo.*;

import java.util.List;

/**
 * 订单Service接口
 * 
 * @author ruoyi
 * @date 2023-09-01
 */
public interface ITicOrderService 
{
    /**
     * 查询订单
     * 
     * @param orderId 订单主键
     * @return 订单
     */
    public TicOrder selectTicOrderByOrderId(Long orderId);
    public TicOrder orderPayOrderIdDetail(Long orderId);
    /**
     * 查询订单列表
     * 
     * @param ticOrder 订单
     * @return 订单集合
     */
    public List<TicOrder> selectTicOrderList(TicOrder ticOrder);

    /**
     * 新增订单
     * 
     * @param ticOrder 订单
     * @return 结果
     */
    public int insertTicOrder(TicOrder ticOrder);

    /**
     * 修改订单
     * 
     * @param ticOrder 订单
     * @return 结果
     */
    public int updateTicOrder(TicOrder ticOrder);

    /**
     * 批量删除订单
     * 
     * @param orderIds 需要删除的订单主键集合
     * @return 结果
     */
    public int deleteTicOrderByOrderIds(Long[] orderIds);

    /**
     * 删除订单信息
     * 
     * @param orderId 订单主键
     * @return 结果
     */
    public int deleteTicOrderByOrderId(Long orderId);

    /**
     * 新增订单
     *
     */
    AjaxResult insertOrder(OrderAddDTO addDTO);

    /**
     * 新增订单
     *
     */
    AjaxResult addOtherOrder(OrderAddDTO addDTO);

    /**
     * 取消订单
     * @param orderIds
     * @return
     */
    AjaxResult cancleOrderByOrderIds(Long[] orderIds);

    List<TicOrderPageVo> selectTicOrderListNew(TicOrderQueryDTO queryDTO);
    List<TicVenuesOrderPageVo> venuesList(TicVenuesOrderQueryDTO queryDTO);

    List<OrderDetailsVo> selectTicOrderByOrderIdNew(Long orderId);
    OrderVenuesDetailsVo getVenuesInfo(Long orderId);

    Long selectOrderResult(String key);

    String serverPhone(OrderPhoneQueryDTO queryDTO);

    TicOrder orderPayDetail(String wxOrdernum);

    AjaxResult orderBack(Long orderId);
    AjaxResult refundOrderStatus(Long orderId);

    R<List<UserCouponVo>> selectCouponList();

    R<List<UserCouponVo>> selectCouponListByTicket(UserCouponQueryDTO queryDTO);

    AjaxResult backfill(Long orderDetailId, String trackingCode);
}
